package com.honeywen.mymvc.leetcode;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。
 *
 * 有效字符串需满足：
 *
 * 左括号必须用相同类型的右括号闭合。
 * 左括号必须以正确的顺序闭合。
 * 注意空字符串可被认为是有效字符串。
 *
 * https://leetcode-cn.com/problems/valid-parentheses/description/
 *
 * @author weiw@opera.com
 * @date 2018/8/7 下午8:21
 */
public class ValidString {

    private static final Map<Character, Character> map = new HashMap<>(3);

    static {
        map.put('(', ')');
        map.put('[', ']');
        map.put('{', '}');
    }


    public static boolean isValid(String s) {
        if (s.length() % 2 != 0 || s.length() == 0) {
            return false;
        }
        String s2 = s.substring(s.length() / 2, s.length());

        int i = 0;
        int j = s2.length() - 1;

        for (int k = 0; k < s2.length(); k++) {

            char left = s.charAt(i);
            char right = s2.charAt(j);
            if (!check(left, right)) {
                return false;
            }
            i++;
            j--;
        }

        return true;
    }

    private static boolean check(char left, char right) {

        return map.get(left) != null && map.get(left) == right;
    }


    public static void main(String[] args) {

        System.out.println(isValid("()[]{}"));



    }
    private static boolean isValid2(String s) {

        return false;
    }


}
